﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProjetoJVA.localhost;
using System.Web.Services.Protocols;

namespace ProjetoJVA.Gui
{
    public partial class DisciplinaTela : Form
    {
        Service1 servicoDisciplina = new Service1();

        public DisciplinaTela()
        {
            InitializeComponent();
        }

        private void PrincipalTela_Load(object sender, EventArgs e)
        {

            this.FormBorderStyle = FormBorderStyle.FixedDialog;
            atualizarLista();

        }

        private void botaoSair_Click(object sender, EventArgs e)
        {
            Environment.Exit(0);
        }

        private void botaoTurmas_Click(object sender, EventArgs e)
        {
            NovaDisciplinaTela ndt = new NovaDisciplinaTela(listDisciplinas);
            ndt.ShowDialog();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            PrincipalTela pt = new PrincipalTela();
            pt.Show();
            this.Dispose();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void botaoAlterar_Click(object sender, EventArgs e)
        {
            alterar();       
        }
        

        private void botaoExcluir_Click(object sender, EventArgs e)
        {
            excluir();
        }

        public void atualizarLista()
        {
            try
            {
                List<Disciplina> lista = servicoDisciplina.listar().ToList();
                listDisciplinas.Items.Clear();
                for (int i = 0; i < lista.Count; i++)
			{
                ListViewItem linha = listDisciplinas.Items.Add(lista[i].Codigo.ToString());
                linha.SubItems.Add(lista[i].Nome);
                linha.SubItems.Add(lista[i].Ch.ToString());
			}
                  
            }
            catch (SoapException ex)
            {
                var menssagem = ex.Message;
                menssagem = menssagem.Remove(0, menssagem.LastIndexOf("--->"));
                menssagem = menssagem.Remove(0, menssagem.IndexOf(":") + 1);

                if (menssagem.IndexOf('\n') >= 0)
                {
                    menssagem = menssagem.Remove(menssagem.IndexOf('\n'));
                }

                MessageBox.Show(menssagem, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        public void alterar()
        {
            try
            {
                Disciplina disciplina = new Disciplina();
                disciplina.Codigo = Convert.ToInt32(listDisciplinas.SelectedItems[0].SubItems[0].Text);
                disciplina.Nome = listDisciplinas.SelectedItems[0].SubItems[1].Text;
                disciplina.Ch = Convert.ToInt32(listDisciplinas.SelectedItems[0].SubItems[2].Text);

                AlterarDisciplinaTela adt = new AlterarDisciplinaTela(disciplina, listDisciplinas);
                adt.ShowDialog();
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageBox.Show("Nenhuma disciplina selecionada!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        public void excluir()
        {
            try
            {

                Disciplina disciplina = new Disciplina();
                disciplina.Codigo = Convert.ToInt32(listDisciplinas.SelectedItems[0].SubItems[0].Text);
                disciplina.Nome = listDisciplinas.SelectedItems[0].SubItems[1].Text;
                disciplina.Ch = Convert.ToInt32(listDisciplinas.SelectedItems[0].SubItems[2].Text);

                if (MessageBox.Show("Deseja excluir esse registro?", "Excluir Disciplina", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    servicoDisciplina.excluir(disciplina);
                    MessageBox.Show("Excluido com sucesso!");
                    atualizarLista();
                }
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageBox.Show("Nenhuma Disciplina selecionada!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (SoapException ex)
            {
                var menssagem = ex.Message;
                menssagem = menssagem.Remove(0, menssagem.LastIndexOf("--->"));
                menssagem = menssagem.Remove(0, menssagem.IndexOf(":") + 1);

                if (menssagem.IndexOf('\n') >= 0)
                {
                    menssagem = menssagem.Remove(menssagem.IndexOf('\n'));
                }

                MessageBox.Show(menssagem, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
    }
}
